]> shimmer.witbreuk.eu Git - UltimateKEYS.git/blobdiff - autohotkey/UltimateKEYS (for AutoHotkey v2).ahk
Add files via upload
[UltimateKEYS.git] / autohotkey / UltimateKEYS (for AutoHotkey v2).ahk
index 44326a56d73150ff5bf3786aeececc38f44e893c..dc05188f0088662fc9b29e80d039221c199a54f2 100644 (file)
@@ -1,24 +1,22 @@
 #requires AutoHotkey v2
 
-; UltimateKEYS (for AutoHotkey v2).ahk - 2023-07-15
+; UltimateKEYS (for AutoHotkey v2).ahk - 2025-01-21
 
-; Website :  www.ultimatekeys.info (pieter-degroote.github.io/UltimateKEYS/)
+; Website :  https://pieter-degroote.github.io/UltimateKEYS/
 
-; License :  GNU General Public License Version 3
-
-; GitHub :   github.com/pieter-degroote/UltimateKEYS
+; GitHub :   https://github.com/pieter-degroote/UltimateKEYS
 
+; License :  GNU General Public License Version 3
 
-; Requirements :
 
-; Keyboard layout (on Windows) :  US QWERTY
+; Configuration :
 
-; AutoHotkey v2 (www.autohotkey.com)
+; Keyboard layout :  US QWERTY
 
 
 
-ListLines False   ; omits recently executed lines from history (for privacy and security)
 KeyHistory 0      ; disables the key history (for privacy and security)
+ListLines False   ; omits recently executed lines from history (for privacy and security)
 
 SendMode "Input"  ; optimizes for faster and more reliable input
 
@@ -70,7 +68,6 @@ cmpAcuteAccent["y"] := "{u+00fd}"  ; (ý) y with acute
 cmpAcuteAccent["Y"] := "{u+00dd}"  ; (Ý) Y with acute
 cmpAcuteAccent["z"] := "{u+017a}"  ; (ź) z with acute
 cmpAcuteAccent["Z"] := "{u+0179}"  ; (Ź) Z with acute
-cmpAcuteAccent[" "] := "{u+00b4}"  ; (´) acute accent
 
 
 ; Compose :  Grave Accent (`)
@@ -92,7 +89,6 @@ cmpGraveAccent["w"] := "{u+1e81}"  ; (ẁ) w with grave
 cmpGraveAccent["W"] := "{u+1e80}"  ; (Ẁ) W with grave
 cmpGraveAccent["y"] := "{u+1ef3}"  ; (ỳ) y with grave
 cmpGraveAccent["Y"] := "{u+1ef2}"  ; (Ỳ) Y with grave
-cmpGraveAccent[" "] := "{u+02cb}"  ; (ˋ) grave accent (modifier)
 
 
 ; Compose :  Diaeresis (")
@@ -117,7 +113,6 @@ cmpDiaeresis["x"] := "{u+1e8d}"  ; (ẍ) x with diaeresis
 cmpDiaeresis["X"] := "{u+1e8c}"  ; (Ẍ) X with diaeresis
 cmpDiaeresis["y"] := "{u+00ff}"  ; (ÿ) y with diaeresis
 cmpDiaeresis["Y"] := "{u+0178}"  ; (Ÿ) Y with diaeresis
-cmpDiaeresis[" "] := "{u+00a8}"  ; (¨) diaeresis
 
 
 ; Compose :  Circumflex Accent (c)
@@ -149,7 +144,6 @@ cmpCircumflex["y"] := "{u+0177}"  ; (ŷ) y with circumflex
 cmpCircumflex["Y"] := "{u+0176}"  ; (Ŷ) Y with circumflex
 cmpCircumflex["z"] := "{u+1e91}"  ; (ẑ) z with circumflex
 cmpCircumflex["Z"] := "{u+1e90}"  ; (Ẑ) Z with circumflex
-cmpCircumflex[" "] := "{u+02c6}"  ; (ˆ) circumflex accent (modifier)
 
 
 ; Compose :  Tilde (~)
@@ -173,7 +167,6 @@ cmpTilde["v"] := "{u+1e7d}"  ; (ṽ) v with tilde
 cmpTilde["V"] := "{u+1e7c}"  ; (Ṽ) V with tilde
 cmpTilde["y"] := "{u+1ef9}"  ; (ỹ) y with tilde
 cmpTilde["Y"] := "{u+1ef8}"  ; (Ỹ) Y with tilde
-cmpTilde[" "] := "{u+02dc}"  ; (˜) small tilde
 
 
 ; Compose :  Cedilla and Ogonek (,)
@@ -211,8 +204,6 @@ cmpCedillaOgonek["t"] := "{u+0163}"  ; (ţ) t with cedilla
 cmpCedillaOgonek["T"] := "{u+0162}"  ; (Ţ) T with cedilla
 cmpCedillaOgonek["u"] := "{u+0173}"  ; (ų) u with ogonek
 cmpCedillaOgonek["U"] := "{u+0172}"  ; (Ų) U with ogonek
-cmpCedillaOgonek["."] := "{u+02db}"  ; (˛) ogonek
-cmpCedillaOgonek[" "] := "{u+00b8}"  ; (¸) cedilla
 
 
 ; Compose :  Caron (v)
@@ -253,7 +244,6 @@ cmpCaron["z"] := "{u+017e}"  ; (ž) z with caron
 cmpCaron["Z"] := "{u+017d}"  ; (Ž) Z with caron
 cmpCaron["3"] := "{u+01ef}"  ; (ǯ) small letter ezh with caron
 cmpCaron["#"] := "{u+01ee}"  ; (Ǯ) capital letter ezh with caron
-cmpCaron[" "] := "{u+02c7}"  ; (ˇ) caron
 
 
 ; Compose :  Dot Above (.)
@@ -355,7 +345,6 @@ cmpMacronStroke["y"] := "{u+0233}"  ; (ȳ) y with macron
 cmpMacronStroke["Y"] := "{u+0232}"  ; (Ȳ) Y with macron
 cmpMacronStroke["z"] := "{u+01b6}"  ; (ƶ) z with stroke
 cmpMacronStroke["Z"] := "{u+01b5}"  ; (Ƶ) Z with stroke
-cmpMacronStroke[" "] := "{u+00af}"  ; (¯) macron
 
 
 ; Compose :  Macron and Stroke (additional) (_)
@@ -435,7 +424,6 @@ cmpBreveSpecial["y"] := "{u+021d}"  ; (ȝ) small letter yogh
 cmpBreveSpecial["Y"] := "{u+021c}"  ; (Ȝ) capital letter yogh
 cmpBreveSpecial["3"] := "{u+0292}"  ; (ʒ) small letter ezh
 cmpBreveSpecial["#"] := "{u+01b7}"  ; (Ʒ) capital letter ezh
-cmpBreveSpecial[" "] := "{u+02d8}"  ; (˘) breve
 
 
 ; Compose :  Double Acute Accent (=)
@@ -445,10 +433,9 @@ cmpDoubleAcute["o"] := "{u+0151}"  ; (ő) o with double acute
 cmpDoubleAcute["O"] := "{u+0150}"  ; (Ő) O with double acute
 cmpDoubleAcute["u"] := "{u+0171}"  ; (ű) u with double acute
 cmpDoubleAcute["U"] := "{u+0170}"  ; (Ű) U with double acute
-cmpDoubleAcute[" "] := "{u+02dd}"  ; (˝) double acute accent
 
 
-; Compose :  Hook and Horn (h)
+; Compose :  Hook, Horn and Variations (h)
 
 global cmpSmallH := Map()
 cmpSmallH["b"] := "{u+0253}"  ; (ɓ) b with hook
@@ -467,6 +454,8 @@ cmpSmallH["H"] := "{u+a7aa}"  ; (Ɦ) H with hook
 cmpSmallH["j"] := "{u+0267}"  ; (ɧ) small letter heng with hook
 cmpSmallH["k"] := "{u+0199}"  ; (ƙ) k with hook
 cmpSmallH["K"] := "{u+0198}"  ; (Ƙ) K with hook
+cmpSmallH["l"] := "{u+026c}"  ; (ɬ) l with belt
+cmpSmallH["L"] := "{u+a7ad}"  ; (Ɬ) L with belt
 cmpSmallH["m"] := "{u+0271}"  ; (ɱ) m with hook
 cmpSmallH["M"] := "{u+2c6e}"  ; (Ɱ) M with hook
 cmpSmallH["n"] := "{u+0272}"  ; (ɲ) n with left hook
@@ -494,15 +483,17 @@ cmpSmallH["z"] := "{u+0225}"  ; (ȥ) z with hook
 cmpSmallH["Z"] := "{u+0224}"  ; (Ȥ) Z with hook
 
 
-; Compose :  Retroflex Hook, Right Hook, Crossed-Tail and Variations (f)
+; Compose :  Retroflex Hook and Variations (f)
 
 global cmpSmallF := Map()
 cmpSmallF["d"] := "{u+1d91}"  ; (ᶑ) d with hook and tail
 cmpSmallF["e"] := "{u+025d}"  ; (ɝ) small letter reversed open e with hook
+cmpSmallF["f"] := "{u+1d94}"  ; (ᶔ) small letter reversed open e with retroflex hook
 cmpSmallF["g"] := "{u+ab36}"  ; (ꬶ) small letter script g with crossed-tail
 cmpSmallF["h"] := "{u+a727}"  ; (ꜧ) small letter heng
 cmpSmallF["H"] := "{u+a726}"  ; (Ꜧ) capital letter heng
 cmpSmallF["j"] := "{u+029d}"  ; (ʝ) j with crossed-tail
+cmpSmallF["J"] := "{u+a7b2}"  ; (Ʝ) J with crossed-tail
 cmpSmallF["l"] := "{u+026d}"  ; (ɭ) l with retroflex hook
 cmpSmallF["n"] := "{u+0273}"  ; (ɳ) n with retroflex hook
 cmpSmallF["q"] := "{u+02a0}"  ; (ʠ) q with hook
@@ -510,11 +501,24 @@ cmpSmallF["r"] := "{u+027e}"  ; (ɾ) r with fishhook
 cmpSmallF["t"] := "{u+0288}"  ; (ʈ) t with retroflex hook
 cmpSmallF["T"] := "{u+01ae}"  ; (Ʈ) T with retroflex hook
 cmpSmallF["v"] := "{u+2c71}"  ; (ⱱ) v with right hook
-cmpSmallF["w"] := "{u+2c73}"  ; (ⱳ) w with right hook
-cmpSmallF["W"] := "{u+2c72}"  ; (Ⱳ) W with right hook
 cmpSmallF["z"] := "{u+0290}"  ; (ʐ) z with retroflex hook
 
 
+; Compose :  Swash Tail and Other Variations (t)
+
+global cmpSmallT := Map()
+cmpSmallT["c"] := "{u+a793}"  ; (ꞓ) c with bar
+cmpSmallT["C"] := "{u+a792}"  ; (Ꞓ) C with bar
+cmpSmallT["f"] := "{u+a799}"  ; (ꞙ) f with stroke
+cmpSmallT["F"] := "{u+a798}"  ; (Ꞙ) F with stroke
+cmpSmallT["l"] := "{u+2c61}"  ; (ⱡ) l with double bar
+cmpSmallT["L"] := "{u+2c60}"  ; (Ⱡ) L with double bar
+cmpSmallT["s"] := "{u+023f}"  ; (ȿ) s with swash tail
+cmpSmallT["S"] := "{u+2c7e}"  ; (Ȿ) S with swash tail
+cmpSmallT["z"] := "{u+0240}"  ; (ɀ) z with swash tail
+cmpSmallT["Z"] := "{u+2c7f}"  ; (Ɀ) Z with swash tail
+
+
 ; Compose :  Latin Greek Letters and Variations (l)
 
 global cmpSmallL := Map()
@@ -552,12 +556,13 @@ cmpSmallL["&"] := "{u+0241}"  ; (Ɂ) capital letter glottal stop
 cmpSmallL["?"] := "{u+0294}"  ; (ʔ) unicase letter glottal stop
 
 
-; Compose :  Turned Letters (r)
+; Compose :  Turned and Reversed Letters (r)
 
 global cmpSmallR := Map()
 cmpSmallR["a"] := "{u+0250}"  ; (ɐ) small letter turned a
 cmpSmallR["A"] := "{u+2c6f}"  ; (Ɐ) capital letter turned A
 cmpSmallR["b"] := "{u+025c}"  ; (ɜ) small letter reversed open e
+cmpSmallR["B"] := "{u+a7ab}"  ; (Ɜ) capital letter reversed open E
 cmpSmallR["d"] := "{u+018d}"  ; (ƍ) Latin small letter turned delta
 cmpSmallR["e"] := "{u+01dd}"  ; (ǝ) small letter turned e
 cmpSmallR["E"] := "{u+018e}"  ; (Ǝ) capital letter reversed E
@@ -576,10 +581,13 @@ cmpSmallR["q"] := "{u+0252}"  ; (ɒ) Latin small letter turned alpha
 cmpSmallR["Q"] := "{u+2c70}"  ; (Ɒ) Latin capital letter turned alpha
 cmpSmallR["r"] := "{u+0279}"  ; (ɹ) small letter turned r
 cmpSmallR["t"] := "{u+0287}"  ; (ʇ) small letter turned t
+cmpSmallR["T"] := "{u+a7b1}"  ; (Ʇ) small letter turned T
 cmpSmallR["v"] := "{u+028c}"  ; (ʌ) small letter turned v
 cmpSmallR["V"] := "{u+0245}"  ; (Ʌ) capital letter turned V
 cmpSmallR["w"] := "{u+028d}"  ; (ʍ) small letter turned w
 cmpSmallR["y"] := "{u+028e}"  ; (ʎ) small letter turned y
+cmpSmallR["z"] := "{u+01b9}"  ; (ƹ) Latin small letter ezh reversed
+cmpSmallR["Z"] := "{u+01b8}"  ; (Ƹ) Latin capital letter ezh reversed
 
 
 ; Compose :  Currency Symbols ($)
@@ -627,7 +635,6 @@ cmpCurrency["W"] := "{u+20a9}"  ; (₩) South Korean won
 cmpCurrency["x"] := "{u+00a4}"  ; (¤) currency sign
 cmpCurrency["y"] := "{u+00a5}"  ; (¥) yen sign
 cmpCurrency["Y"] := "{u+00a5}"  ; (¥) yen sign
-cmpCurrency[" "] := "{u+00a4}"  ; (¤) currency sign
 
 
 ; Compose :  Greek Alphabet (g)
@@ -756,32 +763,30 @@ cmpSubscript[")"] := "{u+208e}"  ; (₎) subscript )
 ; Compose :  Spacing Characters and Dashes
 
 global cmpSpace := Map()
-global cmpQuad := Map()
 cmpSpace["1"] := "{u+2004}"  ; three-per-em space
 cmpSpace["2"] := "{u+2002}"  ; en space
 cmpSpace["3"] := "{u+2003}"  ; em space
 cmpSpace["4"] := "{u+2005}"  ; four-per-em space
-cmpSpace["5"] := "{u+2008}"  ; punctuation space
 cmpSpace["6"] := "{u+2006}"  ; six-per-em space
-cmpSpace["7"] := "{u+2009}"  ; thin space
-cmpSpace["8"] := "{u+200a}"  ; hair space
 cmpSpace["9"] := "{u+2007}"  ; figure space
 cmpSpace["0"] := "{u+200b}"  ; zero-width space (ZWSP)
+cmpSpace["b"] := "{u+00a0}"  ; non-breaking space (NBSP)
 cmpSpace["m"] := "{u+205f}"  ; medium mathematical space (MMSP)
-cmpSpace[" "] := "{u+00a0}"  ; non-breaking space (NBSP)
-cmpSpace["."] := "{u+202f}"  ; narrow no-break space (NNBSP)
+cmpSpace["n"] := "{u+202f}"  ; narrow no-break space (NNBSP)
+cmpSpace["p"] := "{u+2008}"  ; punctuation space
+cmpSpace["t"] := "{u+2009}"  ; thin space
+cmpSpace["h"] := "{u+200a}"  ; hair space
+cmpSpace["."] := "{u+2008}"  ; punctuation space
+cmpMacronStroke["1"] := "{u+2010}"  ; (‐) hyphen
 cmpMacronStroke["2"] := "{u+2013}"  ; (–) en dash
 cmpMacronStroke["3"] := "{u+2014}"  ; (—) em dash
 cmpMacronStroke["4"] := "{u+2015}"  ; (―) horizontal bar
-cmpMacronStroke["5"] := "{u+2010}"  ; (‐) hyphen
 cmpMacronStroke["9"] := "{u+2012}"  ; (‒) figure dash
 cmpMacronStroke["0"] := "{u+00ad}"  ; (­) soft hyphen (SHY)
 cmpMacronStroke["-"] := "{u+2011}"  ; (‑) non-breaking hyphen
-cmpQuad["2"] := "{u+2000}"  ; en quad
-cmpQuad["3"] := "{u+2001}"  ; em quad
 
 
-; Compose :  Arrows and Pointers
+; Compose :  Arrows and Pointing Triangles
 
 global cmpArrow := Map()
 cmpArrow["w"] := "{u+25b2}"  ; (▲) black up-pointing triangle
@@ -792,6 +797,22 @@ cmpArrow["i"] := "{u+25b3}"  ; (△) white up-pointing triangle
 cmpArrow["j"] := "{u+25c1}"  ; (◁) white left-pointing triangle
 cmpArrow["k"] := "{u+25bd}"  ; (▽) white down-pointing triangle
 cmpArrow["l"] := "{u+25b7}"  ; (▷) white right-pointing triangle
+cmpArrow["W"] := "{u+25b4}"  ; (▴) black up-pointing small triangle
+cmpArrow["A"] := "{u+25c2}"  ; (◂) black left-pointing small triangle
+cmpArrow["S"] := "{u+25be}"  ; (▾) black down-pointing small triangle
+cmpArrow["D"] := "{u+25b8}"  ; (▸) black right-pointing small triangle
+cmpArrow["I"] := "{u+25b5}"  ; (▵) white up-pointing small triangle
+cmpArrow["J"] := "{u+25c3}"  ; (◃) white left-pointing small triangle
+cmpArrow["K"] := "{u+25bf}"  ; (▿) white down-pointing small triangle
+cmpArrow["L"] := "{u+25b9}"  ; (▹) white right-pointing small triangle
+cmpArrow["q"] := "{u+25a0}"  ; (■) black square
+cmpArrow["u"] := "{u+25a1}"  ; (□) white square
+cmpArrow["Q"] := "{u+25aa}"  ; (▪) black small square
+cmpArrow["U"] := "{u+25ab}"  ; (▫) white small square
+cmpArrow["z"] := "{u+25c6}"  ; (◆) black diamond
+cmpArrow["m"] := "{u+25c7}"  ; (◇) white diamond
+cmpArrow["Z"] := "{u+2b25}"  ; (⬥) black medium diamond
+cmpArrow["M"] := "{u+2b26}"  ; (⬦) white medium diamond
 cmpArrow["1"] := "{u+2199}"  ; (↙) south west arrow
 cmpArrow["2"] := "{u+2193}"  ; (↓) downwards arrow
 cmpArrow["3"] := "{u+2198}"  ; (↘) south east arrow
@@ -817,25 +838,35 @@ cmpDoubleAcute["0"] := "{u+21d4}"  ; (⇔) left right double arrow
 ; Compose :  Various Symbols (s)
 
 global cmpSymbols := Map()
-cmpSymbols["a"] := "{u+214d}"  ; (⅍) aktieselskab
+cmpSymbols["a"] := "{u+2100}"  ; (℀) account of
 cmpSymbols["b"] := "{u+203d}"  ; (‽) interrobang
 cmpSymbols["B"] := "{u+2e18}"  ; (⸘) inverted interrobang
 cmpSymbols["c"] := "{u+2105}"  ; (℅) care of
 cmpSymbols["d"] := "{u+22c4}"  ; (⋄) diamond operator
 cmpSymbols["e"] := "{u+212e}"  ; (℮) estimated symbol
 cmpSymbols["f"] := "{u+2640}"  ; (♀) female sign (Venus)
-cmpSymbols["h"] := "{u+2126}"  ; (Ω) ohm sign (backwards compatibility)
+cmpSymbols["h"] := "{u+2302}"  ; (⌂) house
+cmpSymbols["H"] := "{u+2126}"  ; (Ω) ohm sign (backwards compatibility)
 cmpSymbols["i"] := "{u+2300}"  ; (⌀) diameter sign
+cmpSymbols["j"] := "{u+2101}"  ; (℁) addressed to the subject
+cmpSymbols["k"] := "{u+214d}"  ; (⅍) aktieselskab
 cmpSymbols["l"] := "{u+2113}"  ; (ℓ) script small l
 cmpSymbols["L"] := "{u+2112}"  ; (ℒ) Laplace transform
 cmpSymbols["m"] := "{u+2642}"  ; (♂) male sign (Mars)
 cmpSymbols["M"] := "{u+2120}"  ; (℠) service mark
-cmpSymbols["r"] := "{u+211e}"  ; (℞) prescription take (Recipere)
-cmpSymbols["R"] := "{u+211e}"  ; (℞) prescription take (Recipere)
+cmpSymbols["p"] := "{u+211e}"  ; (℞) prescription take (Recipere)
+cmpSymbols["P"] := "{u+211e}"  ; (℞) prescription take (Recipere)
+cmpSymbols["r"] := "{u+211f}"  ; (℟) response (liturgy)
+cmpSymbols["R"] := "{u+211f}"  ; (℟) response (liturgy)
+cmpSymbols["u"] := "{u+2106}"  ; (℆) cada una (each one)
+cmpSymbols["v"] := "{u+2123}"  ; (℣) versicle (liturgy)
+cmpSymbols["V"] := "{u+2123}"  ; (℣) versicle (liturgy)
 cmpSymbols["x"] := "{u+203b}"  ; (※) reference mark
 cmpSymbols["2"] := "{u+266b}"  ; (♫) beamed eighth notes
 cmpSymbols["3"] := "{u+2042}"  ; (⁂) asterism
 cmpSymbols["4"] := "{u+203b}"  ; (※) reference mark
+cmpSymbols["5"] := "{u+2605}"  ; (★) black star
+cmpSymbols["6"] := "{u+2606}"  ; (☆) white star
 cmpSymbols["8"] := "{u+266a}"  ; (♪) eighth note
 cmpSymbols["!"] := "{u+203c}"  ; (‼) double exclamation mark
 cmpSymbols["?"] := "{u+2e2e}"  ; (⸮) reversed question mark
@@ -893,12 +924,12 @@ cmpMathSymbols["4"] := "{u+2237}"  ; (∷) proportion sign
 cmpMathSymbols["6"] := "{u+2220}"  ; (∠) angle symbol
 cmpMathSymbols["9"] := "{u+221f}"  ; (∟) right angle
 cmpMathSymbols["0"] := "{u+2221}"  ; (∡) measured angle
+cmpMathSymbols["."] := "{u+22c5}"  ; (⋅) dot operator
+cmpMathSymbols["="] := "{u+225d}"  ; (≝) equal to by definition
 cmpMathSymbols["+"] := "{u+2295}"  ; (⊕) circled plus
 cmpMathSymbols["-"] := "{u+2296}"  ; (⊖) circled minus
 cmpMathSymbols["*"] := "{u+2297}"  ; (⊗) circled times
 cmpMathSymbols["/"] := "{u+2298}"  ; (⊘) circled division slash
-cmpMathSymbols["."] := "{u+2299}"  ; (⊙) circled dot operator
-cmpMathSymbols["="] := "{u+225d}"  ; (≝) equal to by definition
 cmpMathSymbols[";"] := "{u+2235}"  ; (∵) because sign
 cmpMathSymbols[":"] := "{u+2234}"  ; (∴) therefore sign
 cmpMathSymbols["&"] := "{u+2227}"  ; (∧) logical and
@@ -916,7 +947,6 @@ global cmpSmallN := Map()
 global cmpCapitalN := Map()
 global cmpCapitalO := Map()
 global cmpCapitalS := Map()
-global cmpSmallT := Map()
 global cmpCapitalT := Map()
 cmpArrow["e"] := "{u+00e6}"      ; (æ) letter ae
 cmpCapitalA["E"] := "{u+00c6}"   ; (Æ) letter AE
@@ -939,7 +969,12 @@ cmpCapitalT["H"] := "{u+00de}"   ; (Þ) capital letter thorn
 
 global cmpDigitEight := Map()
 global cmpCapitalP := Map()
-global cmpSemicolon := Map()
+global cmpSmallY := Map()
+global cmpCapitalV := Map()
+global cmpCapitalY := Map()
+global cmpSmallX := Map()
+global cmpCapitalX := Map()
+global cmpVerticalLine := Map()
 global cmpAsterisk := Map()
 global cmpExclam := Map()
 global cmpQuestion := Map()
@@ -948,6 +983,8 @@ global cmpPlus := Map()
 global cmpPercent := Map()
 global cmpLessThan := Map()
 global cmpGreaterThan := Map()
+global cmpSemicolon := Map()
+global cmpBracketLeft := Map()
 cmpSmallD["d"] := "{u+2020}"        ; (†) dagger
 cmpCapitalD["D"] := "{u+2021}"      ; (‡) double dagger
 cmpSmallI["i"] := "{u+221e}"        ; (∞) infinity symbol
@@ -964,14 +1001,13 @@ cmpSmallR["4"] := "{u+221c}"        ; (∜) fourth root
 cmpSymbols["o"] := "{u+00a7}"       ; (§) section sign
 cmpCapitalS["o"] := "{u+00a7}"      ; (§) section sign
 cmpSmallT["m"] := "{u+2122}"        ; (™) trademark symbol
-cmpSemicolon["b"] := "{u+2022}"     ; (•) bullet
-cmpSemicolon[";"] := "{u+2022}"     ; (•) bullet
-cmpSemicolon["t"] := "{u+2023}"     ; (‣) triangular bullet
-cmpSemicolon[">"] := "{u+2023}"     ; (‣) triangular bullet
-cmpSemicolon["h"] := "{u+2043}"     ; (⁃) hyphen bullet
-cmpSemicolon["-"] := "{u+2043}"     ; (⁃) hyphen bullet
-cmpSemicolon["w"] := "{u+25e6}"     ; (◦) white bullet
-cmpSemicolon["o"] := "{u+25e6}"     ; (◦) white bullet
+cmpCaron["v"] := "{u+2713}"         ; (✓) check mark
+cmpSmallY["y"] := "{u+2713}"        ; (✓) check mark
+cmpCapitalV["V"] := "{u+2714}"      ; (✔) heavy check mark
+cmpCapitalY["Y"] := "{u+2714}"      ; (✔) heavy check mark
+cmpSmallX["x"] := "{u+2717}"        ; (✗) ballot x
+cmpCapitalX["X"] := "{u+2718}"      ; (✘) heavy ballot x
+cmpVerticalLine["|"] := "{u+2016}"  ; (‖) double vertical line
 cmpAcuteAccent["1"] := "{u+2032}"   ; (′) prime
 cmpAcuteAccent["2"] := "{u+2033}"   ; (″) double prime
 cmpAcuteAccent["3"] := "{u+2034}"   ; (‴) triple prime
@@ -980,9 +1016,9 @@ cmpAsterisk["*"] := "{u+00d7}"      ; (×) multiplication sign
 cmpStroke["/"] := "{u+00f7}"        ; (÷) division sign
 cmpAsterisk["o"] := "{u+00b0}"      ; (°) degree sign
 cmpRingAbove["*"] := "{u+00b0}"     ; (°) degree sign
-cmpDotAbove["."] := "{u+00b7}"      ; (·) middle dot
-cmpDotAbove[" "] := "{u+00b7}"      ; (·) middle dot
+cmpDotAbove["-"] := "{u+00b7}"      ; (·) middle dot
 cmpDotAbove["3"] := "{u+2026}"      ; (…) horizontal ellipsis
+cmpDotAbove["."] := "{u+2026}"      ; (…) horizontal ellipsis
 cmpArrow["-"] := "{u+00aa}"         ; (ª) feminine ordinal indicator (Spanish, Portuguese, Italian, Galician)
 cmpRingAbove["-"] := "{u+00ba}"     ; (º) masculine ordinal indicator (Spanish, Portuguese, Italian, Galician)
 cmpExclam["!"] := "{u+00a1}"        ; (¡) inverted exclamation mark
@@ -1005,6 +1041,16 @@ cmpGreaterThan["="] := "{u+2265}"   ; (≥) greater-than or equal to
 cmpLessThan["+"] := "{u+2a7d}"      ; (⩽) less-than or slanted equal to
 cmpGreaterThan["+"] := "{u+2a7e}"   ; (⩾) greater-than or slanted equal to
 cmpTilde["~"] := "{u+2248}"         ; (≈) almost equal to
+cmpSemicolon["b"] := "{u+2022}"     ; (•) bullet
+cmpSemicolon["o"] := "{u+25e6}"     ; (◦) white bullet
+cmpSemicolon["w"] := "{u+25e6}"     ; (◦) white bullet
+cmpSemicolon["h"] := "{u+2043}"     ; (⁃) hyphen bullet
+cmpSemicolon["t"] := "{u+2023}"     ; (‣) triangular bullet
+cmpSemicolon[";"] := "{u+2022}"     ; (•) bullet
+cmpBracketLeft["]"] := "{u+2610}"   ; (☐) ballot box
+cmpBracketLeft["v"] := "{u+2611}"   ; (☑) ballot box with check
+cmpBracketLeft["y"] := "{u+2611}"   ; (☑) ballot box with check
+cmpBracketLeft["x"] := "{u+2612}"   ; (☒) ballot box with x
 
 
 ; Compose :  Vulgar Fractions
@@ -1039,13 +1085,13 @@ cmpDigitZero["3"] := "{u+2189}"   ; (↉) vulgar fraction 0/3
 
 ; Compose :  Quotation Marks
 
-global cmpBracketLeft := Map()
 global cmpBracketRight := Map()
 global cmpBackslash := Map()
 cmpCedillaOgonek[chr(34)] := "{u+201e}"  ; („) double low-9 quotation mark
 cmpDiaeresis[","] := "{u+201e}"          ; („) double low-9 quotation mark
 cmpCedillaOgonek["'"] := "{u+201a}"      ; (‚) single low-9 quotation mark
 cmpAcuteAccent[","] := "{u+201a}"        ; (‚) single low-9 quotation mark
+cmpCedillaOgonek[","] := "{u+201a}"      ; (‚) single low-9 quotation mark
 cmpDiaeresis["["] := "{u+201c}"          ; (“) left double quotation mark
 cmpBracketLeft[chr(34)] := "{u+201c}"    ; (“) left double quotation mark
 cmpDiaeresis["]"] := "{u+201d}"          ; (”) right double quotation mark
@@ -1070,6 +1116,31 @@ cmpGreaterThan["'"] := "{u+203a}"        ; (›) right-pointing single angle quo
 cmpAcuteAccent[">"] := "{u+203a}"        ; (›) right-pointing single angle quotation mark
 
 
+; Compose :  Chess Pieces and Playing Card Suit Symbols (C)
+
+global cmpCapitalC := Map()
+cmpCapitalC["k"] := "{u+2654}"  ; (♔) white chess king
+cmpCapitalC["q"] := "{u+2655}"  ; (♕) white chess queen
+cmpCapitalC["r"] := "{u+2656}"  ; (♖) white chess rook
+cmpCapitalC["b"] := "{u+2657}"  ; (♗) white chess bishop
+cmpCapitalC["n"] := "{u+2658}"  ; (♘) white chess knight
+cmpCapitalC["p"] := "{u+2659}"  ; (♙) white chess pawn
+cmpCapitalC["K"] := "{u+265a}"  ; (♚) black chess king
+cmpCapitalC["Q"] := "{u+265b}"  ; (♛) black chess queen
+cmpCapitalC["R"] := "{u+265c}"  ; (♜) black chess rook
+cmpCapitalC["B"] := "{u+265d}"  ; (♝) black chess bishop
+cmpCapitalC["N"] := "{u+265e}"  ; (♞) black chess knight
+cmpCapitalC["P"] := "{u+265f}"  ; (♟) black chess pawn
+cmpCapitalC["c"] := "{u+2667}"  ; (♧) white club suit
+cmpCapitalC["C"] := "{u+2663}"  ; (♣) black club suit
+cmpCapitalC["d"] := "{u+2662}"  ; (♢) white diamond suit
+cmpCapitalC["D"] := "{u+2666}"  ; (♦) black diamond suit
+cmpCapitalC["h"] := "{u+2661}"  ; (♡) white heart suit
+cmpCapitalC["H"] := "{u+2665}"  ; (♥) black heart suit
+cmpCapitalC["s"] := "{u+2664}"  ; (♤) white spade suit
+cmpCapitalC["S"] := "{u+2660}"  ; (♠) black spade suit
+
+
 ; Compose :  Double Grave Accent (G)
 
 global cmpCapitalG := Map()
@@ -1221,6 +1292,30 @@ cmpGreaterThan["z"] := "{u+1e93}"  ; (ẓ) z with dot below
 cmpGreaterThan["Z"] := "{u+1e92}"  ; (Ẓ) Z with dot below
 
 
+; Accented Letters with Dot Below (?)
+
+cmpQuestion["a"] := "{u+1ead}"  ; (ậ) a with circumflex and dot below
+cmpQuestion["A"] := "{u+1eac}"  ; (Ậ) A with circumflex and dot below
+cmpQuestion["b"] := "{u+1eb7}"  ; (ặ) a with breve and dot below
+cmpQuestion["B"] := "{u+1eb6}"  ; (Ặ) A with breve and dot below
+cmpQuestion["e"] := "{u+1ec7}"  ; (ệ) e with circumflex and dot below
+cmpQuestion["E"] := "{u+1ec6}"  ; (Ệ) E with circumflex and dot below
+cmpQuestion["f"] := "{u+1e1d}"  ; (ḝ) e with cedilla and breve
+cmpQuestion["F"] := "{u+1e1c}"  ; (Ḝ) E with cedilla and breve
+cmpQuestion["l"] := "{u+1e39}"  ; (ḹ) l with dot below and macron
+cmpQuestion["L"] := "{u+1e38}"  ; (Ḹ) L with dot below and macron
+cmpQuestion["o"] := "{u+1ed9}"  ; (ộ) o with circumflex and dot below
+cmpQuestion["O"] := "{u+1ed8}"  ; (Ộ) O with circumflex and dot below
+cmpQuestion["r"] := "{u+1e5d}"  ; (ṝ) r with dot below and macron
+cmpQuestion["R"] := "{u+1e5c}"  ; (Ṝ) R with dot below and macron
+cmpQuestion["s"] := "{u+1e69}"  ; (ṩ) s with dot below and dot above
+cmpQuestion["S"] := "{u+1e68}"  ; (Ṩ) S with dot below and dot above
+cmpQuestion["t"] := "{u+1ee3}"  ; (ợ) o with horn and dot below
+cmpQuestion["T"] := "{u+1ee2}"  ; (Ợ) O with horn and dot below
+cmpQuestion["u"] := "{u+1ef1}"  ; (ự) u with horn and dot below
+cmpQuestion["U"] := "{u+1ef0}"  ; (Ự) U with horn and dot below
+
+
 ; Compose :  Miscellaneous Symbols and Dingbats
 
 global cmpDigitSix := Map()
@@ -1274,6 +1369,8 @@ cmpDigitTwo["s"] := "{u+2691}"  ; (⚑) black flag
 cmpDigitTwo["t"] := "{u+26a0}"  ; (⚠) warning sign
 cmpDigitTwo["u"] := "{u+26a1}"  ; (⚡) high voltage sign
 cmpDigitTwo["v"] := "{u+26d4}"  ; (⛔) no entry
+cmpDigitTwo["w"] := "{u+231a}"  ; (⌚) watch
+cmpDigitTwo["x"] := "{u+231b}"  ; (⌛) hourglass
 
 cmpDigitThree["a"] := "{u+2701}"  ; (✁) upper blade scissors
 cmpDigitThree["b"] := "{u+2702}"  ; (✂) black scissors
@@ -1417,31 +1514,6 @@ cmpDigitEight["m"] := "{u+27be}"  ; (➾) open-outlined rightwards arrow
 cmpDigitEight["n"] := "{u+27c1}"  ; (⟁) white triangle containing small white triangle
 
 
-; Compose :  Chess Pieces and Playing Card Suit Symbols (C)
-
-global cmpCapitalC := Map()
-cmpCapitalC["k"] := "{u+2654}"  ; (♔) white chess king
-cmpCapitalC["q"] := "{u+2655}"  ; (♕) white chess queen
-cmpCapitalC["r"] := "{u+2656}"  ; (♖) white chess rook
-cmpCapitalC["b"] := "{u+2657}"  ; (♗) white chess bishop
-cmpCapitalC["n"] := "{u+2658}"  ; (♘) white chess knight
-cmpCapitalC["p"] := "{u+2659}"  ; (♙) white chess pawn
-cmpCapitalC["K"] := "{u+265a}"  ; (♚) black chess king
-cmpCapitalC["Q"] := "{u+265b}"  ; (♛) black chess queen
-cmpCapitalC["R"] := "{u+265c}"  ; (♜) black chess rook
-cmpCapitalC["B"] := "{u+265d}"  ; (♝) black chess bishop
-cmpCapitalC["N"] := "{u+265e}"  ; (♞) black chess knight
-cmpCapitalC["P"] := "{u+265f}"  ; (♟) black chess pawn
-cmpCapitalC["c"] := "{u+2667}"  ; (♧) white club suit
-cmpCapitalC["C"] := "{u+2663}"  ; (♣) black club suit
-cmpCapitalC["d"] := "{u+2662}"  ; (♢) white diamond suit
-cmpCapitalC["D"] := "{u+2666}"  ; (♦) black diamond suit
-cmpCapitalC["h"] := "{u+2661}"  ; (♡) white heart suit
-cmpCapitalC["H"] := "{u+2665}"  ; (♥) black heart suit
-cmpCapitalC["s"] := "{u+2664}"  ; (♤) white spade suit
-cmpCapitalC["S"] := "{u+2660}"  ; (♠) black spade suit
-
-
 ; Compose :  Dingbat Negative Circled Digits (n)
 
 cmpSmallN["1"] := "{u+2776}"  ; (❶) dingbat negative circled digit 1
@@ -1456,444 +1528,591 @@ cmpSmallN["9"] := "{u+277e}"  ; (❾) dingbat negative circled digit 9
 cmpSmallN["0"] := "{u+277f}"  ; (❿) dingbat negative circled digit 10
 
 
-; Configuration :  'Right Alt' and 'Right Alt + Shift' on US QWERTY
+; Configuration :  'AltGr (RAlt)' and 'AltGr (RAlt) + Shift' modifiers
+
+; Key :  1
+>!sc002::
+<^>!sc002::Send "{u+00a1}"   ; (¡) inverted exclamation mark
+>!+sc002::
+<^>!+sc002::Send "{u+00b9}"  ; (¹) superscript 1
+
+; Key :  2
+>!sc003::
+<^>!sc003::Send "{u+2264}"   ; (≤) less-than or equal to
+>!+sc003::
+<^>!+sc003::Send "{u+00b2}"  ; (²) superscript 2
+
+; Key :  3
+>!sc004::
+<^>!sc004::Send "{u+2265}"   ; (≥) greater-than or equal to
+>!+sc004::
+<^>!+sc004::Send "{u+00b3}"  ; (³) superscript 3
+
+; Key :  4
+>!sc005::
+<^>!sc005::Send "{u+00a3}"   ; (£) pound sign
+>!+sc005::
+<^>!+sc005::Send "{u+00a5}"  ; (¥) yen sign
+
+; Key :  5
+>!sc006::
+<^>!sc006::Send "{u+20ac}"   ; (€) euro sign
+>!+sc006::
+<^>!+sc006::Send "{u+00a2}"  ; (¢) cent sign (dollar)
+
+; Key :  6
+>!sc007::
+<^>!sc007:: {
+  if GetKeyState("CapsLock", "T")
+    Send "{u+00c3}"  ; (Ã) A with tilde
+  else
+    Send "{u+00e3}"  ; (ã) a with tilde
+}
+>!+sc007::
+<^>!+sc007:: {
+  if GetKeyState("CapsLock", "T")
+    Send "{u+00e3}"  ; (ã) a with tilde
+  else
+    Send "{u+00c3}"  ; (Ã) A with tilde
+}
 
->!a:: {
+; Key :  7
+>!sc008::
+<^>!sc008:: {
   if GetKeyState("CapsLock", "T")
-    Send "{u+00c4}"  ; (Ä) A with diaeresis
+    Send "{u+00d5}"  ; (Õ) O with tilde
   else
-    Send "{u+00e4}"  ; (ä) a with diaeresis
+    Send "{u+00f5}"  ; (õ) o with tilde
 }
->!+a:: {
+>!+sc008::
+<^>!+sc008:: {
   if GetKeyState("CapsLock", "T")
-    Send "{u+00e4}"  ; (ä) a with diaeresis
+    Send "{u+00f5}"  ; (õ) o with tilde
   else
-    Send "{u+00c4}"  ; (Ä) A with diaeresis
+    Send "{u+00d5}"  ; (Õ) O with tilde
 }
 
->!q:: {
+; Key :  8
+>!sc009::
+<^>!sc009::Send "{u+201e}"   ; („) double low-9 quotation mark
+>!+sc009::
+<^>!+sc009::Send "{u+00a7}"  ; (§) section sign
+
+; Key :  9
+>!sc00A::
+<^>!sc00A::Send "{u+201c}"   ; (“) left double quotation mark
+>!+sc00A::
+<^>!+sc00A::Send "{u+2018}"  ; (‘) left single quotation mark
+
+; Key :  0
+>!sc00B::
+<^>!sc00B::Send "{u+201d}"   ; (”) right double quotation mark
+>!+sc00B::
+<^>!+sc00B::Send "{u+2019}"  ; (’) right single quotation mark
+
+; Key :  - / _ (hyphen-minus / underscore)
+>!sc00C::
+<^>!sc00C::Send "{u+2013}"   ; (–) en dash
+>!+sc00C::
+<^>!+sc00C::Send "{u+2014}"  ; (—) em dash
+
+; Key :  = / + (equals sign / plus sign)
+>!sc00D::
+<^>!sc00D::Send "{u+00d7}"   ; (×) multiplication sign
+>!+sc00D::
+<^>!+sc00D::Send "{u+00f7}"  ; (÷) division sign
+
+; Key :  Q
+>!sc010::
+<^>!sc010:: {
   if GetKeyState("CapsLock", "T")
     Send "{u+00c6}"  ; (Æ) letter AE
   else
     Send "{u+00e6}"  ; (æ) letter ae
 }
->!+q:: {
+>!+sc010::
+<^>!+sc010:: {
   if GetKeyState("CapsLock", "T")
     Send "{u+00e6}"  ; (æ) letter ae
   else
     Send "{u+00c6}"  ; (Æ) letter AE
 }
 
->!w:: {
+; Key :  W
+>!sc011::
+<^>!sc011:: {
   if GetKeyState("CapsLock", "T")
     Send "{u+00c5}"  ; (Å) A with ring above
   else
     Send "{u+00e5}"  ; (å) a with ring above
 }
->!+w:: {
+>!+sc011::
+<^>!+sc011:: {
   if GetKeyState("CapsLock", "T")
     Send "{u+00e5}"  ; (å) a with ring above
   else
     Send "{u+00c5}"  ; (Å) A with ring above
 }
 
->!z:: {
+; Key :  E
+>!sc012::
+<^>!sc012:: {
   if GetKeyState("CapsLock", "T")
-    Send "{u+00c0}"  ; (À) A with grave
+    Send "{u+00cb}"  ; (Ë) E with diaeresis
   else
-    Send "{u+00e0}"  ; (à) a with grave
+    Send "{u+00eb}"  ; (ë) e with diaeresis
 }
->!+z:: {
+>!+sc012::
+<^>!+sc012:: {
   if GetKeyState("CapsLock", "T")
-    Send "{u+00e0}"  ; (à) a with grave
+    Send "{u+00eb}"  ; (ë) e with diaeresis
   else
-    Send "{u+00c0}"  ; (À) A with grave
+    Send "{u+00cb}"  ; (Ë) E with diaeresis
 }
 
->!x:: {
+; Key :  R
+>!sc013::
+<^>!sc013:: {
   if GetKeyState("CapsLock", "T")
-    Send "{u+00c1}"  ; (Á) A with acute
+    Send "{u+00ca}"  ; (Ê) E with circumflex
   else
-    Send "{u+00e1}"  ; (á) a with acute
+    Send "{u+00ea}"  ; (ê) e with circumflex
 }
->!+x:: {
+>!+sc013::
+<^>!+sc013:: {
   if GetKeyState("CapsLock", "T")
-    Send "{u+00e1}"  ; (á) a with acute
+    Send "{u+00ea}"  ; (ê) e with circumflex
   else
-    Send "{u+00c1}"  ; (Á) A with acute
+    Send "{u+00ca}"  ; (Ê) E with circumflex
 }
 
->!d:: {
+; Key :  T
+>!sc014::
+<^>!sc014:: {
   if GetKeyState("CapsLock", "T")
-    Send "{u+00c2}"  ; (Â) A with circumflex
+    Send "{u+00ce}"  ; (Î) I with circumflex
   else
-    Send "{u+00e2}"  ; (â) a with circumflex
+    Send "{u+00ee}"  ; (î) i with circumflex
 }
->!+d:: {
+>!+sc014::
+<^>!+sc014:: {
   if GetKeyState("CapsLock", "T")
-    Send "{u+00e2}"  ; (â) a with circumflex
+    Send "{u+00ee}"  ; (î) i with circumflex
   else
-    Send "{u+00c2}"  ; (Â) A with circumflex
+    Send "{u+00ce}"  ; (Î) I with circumflex
 }
 
->!c:: {
+; Key :  Y
+>!sc015::
+<^>!sc015:: {
   if GetKeyState("CapsLock", "T")
-    Send "{u+00c7}"  ; (Ç) C with cedilla
+    Send "{u+00db}"  ; (Û) U with circumflex
   else
-    Send "{u+00e7}"  ; (ç) c with cedilla
+    Send "{u+00fb}"  ; (û) u with circumflex
 }
->!+c:: {
+>!+sc015::
+<^>!+sc015:: {
   if GetKeyState("CapsLock", "T")
-    Send "{u+00e7}"  ; (ç) c with cedilla
+    Send "{u+00fb}"  ; (û) u with circumflex
   else
-    Send "{u+00c7}"  ; (Ç) C with cedilla
+    Send "{u+00db}"  ; (Û) U with circumflex
 }
 
->!e:: {
+; Key :  U
+>!sc016::
+<^>!sc016:: {
   if GetKeyState("CapsLock", "T")
-    Send "{u+00cb}"  ; (Ë) E with diaeresis
+    Send "{u+00dc}"  ; (Ü) U with diaeresis
   else
-    Send "{u+00eb}"  ; (ë) e with diaeresis
+    Send "{u+00fc}"  ; (ü) u with diaeresis
 }
->!+e:: {
+>!+sc016::
+<^>!+sc016:: {
   if GetKeyState("CapsLock", "T")
-    Send "{u+00eb}"  ; (ë) e with diaeresis
+    Send "{u+00fc}"  ; (ü) u with diaeresis
   else
-    Send "{u+00cb}"  ; (Ë) E with diaeresis
+    Send "{u+00dc}"  ; (Ü) U with diaeresis
 }
 
->!f:: {
+; Key :  I
+>!sc017::
+<^>!sc017:: {
   if GetKeyState("CapsLock", "T")
-    Send "{u+00c8}"  ; (È) E with grave
+    Send "{u+00cf}"  ; (Ï) I with diaeresis
   else
-    Send "{u+00e8}"  ; (è) e with grave
+    Send "{u+00ef}"  ; (ï) i with diaeresis
 }
->!+f:: {
+>!+sc017::
+<^>!+sc017:: {
   if GetKeyState("CapsLock", "T")
-    Send "{u+00e8}"  ; (è) e with grave
+    Send "{u+00ef}"  ; (ï) i with diaeresis
   else
-    Send "{u+00c8}"  ; (È) E with grave
+    Send "{u+00cf}"  ; (Ï) I with diaeresis
 }
 
->!g:: {
+; Key :  O
+>!sc018::
+<^>!sc018:: {
   if GetKeyState("CapsLock", "T")
-    Send "{u+00c9}"  ; (É) E with acute
+    Send "{u+00d6}"  ; (Ö) O with diaeresis
   else
-    Send "{u+00e9}"  ; (é) e with acute
+    Send "{u+00f6}"  ; (ö) o with diaeresis
 }
->!+g:: {
+>!+sc018::
+<^>!+sc018:: {
   if GetKeyState("CapsLock", "T")
-    Send "{u+00e9}"  ; (é) e with acute
+    Send "{u+00f6}"  ; (ö) o with diaeresis
   else
-    Send "{u+00c9}"  ; (É) E with acute
+    Send "{u+00d6}"  ; (Ö) O with diaeresis
 }
 
->!r:: {
+; Key :  P
+>!sc019::
+<^>!sc019:: {
   if GetKeyState("CapsLock", "T")
-    Send "{u+00ca}"  ; (Ê) E with circumflex
+    Send "{u+00d4}"  ; (Ô) O with circumflex
   else
-    Send "{u+00ea}"  ; (ê) e with circumflex
+    Send "{u+00f4}"  ; (ô) o with circumflex
 }
->!+r:: {
+>!+sc019::
+<^>!+sc019:: {
   if GetKeyState("CapsLock", "T")
-    Send "{u+00ea}"  ; (ê) e with circumflex
+    Send "{u+00f4}"  ; (ô) o with circumflex
   else
-    Send "{u+00ca}"  ; (Ê) E with circumflex
+    Send "{u+00d4}"  ; (Ô) O with circumflex
 }
 
->!i:: {
+; Key :  [ / { (left square bracket / left curly bracket)
+>!sc01A::
+<^>!sc01A::Send "{u+00ab}"   ; («) left-pointing double angle quotation mark
+>!+sc01A::
+<^>!+sc01A::Send "{u+2039}"  ; (‹) left-pointing single angle quotation mark
+
+; Key :  ] / } (right square bracket / right curly bracket)
+>!sc01B::
+<^>!sc01B::Send "{u+00bb}"   ; (») right-pointing double angle quotation mark
+>!+sc01B::
+<^>!+sc01B::Send "{u+203a}"  ; (›) right-pointing single angle quotation mark
+
+; Key :  A
+>!sc01E::
+<^>!sc01E:: {
   if GetKeyState("CapsLock", "T")
-    Send "{u+00cf}"  ; (Ï) I with diaeresis
+    Send "{u+00c4}"  ; (Ä) A with diaeresis
   else
-    Send "{u+00ef}"  ; (ï) i with diaeresis
+    Send "{u+00e4}"  ; (ä) a with diaeresis
 }
->!+i:: {
+>!+sc01E::
+<^>!+sc01E:: {
   if GetKeyState("CapsLock", "T")
-    Send "{u+00ef}"  ; (ï) i with diaeresis
+    Send "{u+00e4}"  ; (ä) a with diaeresis
   else
-    Send "{u+00cf}"  ; (Ï) I with diaeresis
+    Send "{u+00c4}"  ; (Ä) A with diaeresis
 }
 
->!v:: {
+; Key :  S
+>!sc01F::
+<^>!sc01F:: {
   if GetKeyState("CapsLock", "T")
-    Send "{u+00cc}"  ; (Ì) I with grave
+    Send "{u+1e9e}"  ; (ẞ) capital sharp S (capital Eszett)
   else
-    Send "{u+00ec}"  ; (ì) i with grave
+    Send "{u+00df}"  ; (ß) small sharp s (Eszett)
 }
->!+v:: {
+>!+sc01F::
+<^>!+sc01F:: {
   if GetKeyState("CapsLock", "T")
-    Send "{u+00ec}"  ; (ì) i with grave
+    Send "{u+00df}"  ; (ß) small sharp s (Eszett)
   else
-    Send "{u+00cc}"  ; (Ì) I with grave
+    Send "{u+1e9e}"  ; (ẞ) capital sharp S (capital Eszett)
 }
 
->!b:: {
+; Key :  D
+>!sc020::
+<^>!sc020:: {
   if GetKeyState("CapsLock", "T")
-    Send "{u+00cd}"  ; (Í) I with acute
+    Send "{u+00c2}"  ; (Â) A with circumflex
   else
-    Send "{u+00ed}"  ; (í) i with acute
+    Send "{u+00e2}"  ; (â) a with circumflex
 }
->!+b:: {
+>!+sc020::
+<^>!+sc020:: {
   if GetKeyState("CapsLock", "T")
-    Send "{u+00ed}"  ; (í) i with acute
+    Send "{u+00e2}"  ; (â) a with circumflex
   else
-    Send "{u+00cd}"  ; (Í) I with acute
+    Send "{u+00c2}"  ; (Â) A with circumflex
 }
 
->!t:: {
+; Key :  F
+>!sc021::
+<^>!sc021:: {
   if GetKeyState("CapsLock", "T")
-    Send "{u+00ce}"  ; (Î) I with circumflex
+    Send "{u+00c9}"  ; (É) E with acute
   else
-    Send "{u+00ee}"  ; (î) i with circumflex
+    Send "{u+00e9}"  ; (é) e with acute
 }
->!+t:: {
+>!+sc021::
+<^>!+sc021:: {
   if GetKeyState("CapsLock", "T")
-    Send "{u+00ee}"  ; (î) i with circumflex
+    Send "{u+00e9}"  ; (é) e with acute
   else
-    Send "{u+00ce}"  ; (Î) I with circumflex
+    Send "{u+00c9}"  ; (É) E with acute
 }
 
->!n:: {
+; Key :  G
+>!sc022::
+<^>!sc022:: {
   if GetKeyState("CapsLock", "T")
-    Send "{u+00d1}"  ; (Ñ) N with tilde
+    Send "{u+00c8}"  ; (È) E with grave
   else
-    Send "{u+00f1}"  ; (ñ) n with tilde
+    Send "{u+00e8}"  ; (è) e with grave
 }
->!+n:: {
+>!+sc022::
+<^>!+sc022:: {
   if GetKeyState("CapsLock", "T")
-    Send "{u+00f1}"  ; (ñ) n with tilde
+    Send "{u+00e8}"  ; (è) e with grave
   else
-    Send "{u+00d1}"  ; (Ñ) N with tilde
+    Send "{u+00c8}"  ; (È) E with grave
 }
 
->!o:: {
+; Key :  H
+>!sc023::
+<^>!sc023:: {
   if GetKeyState("CapsLock", "T")
-    Send "{u+00d6}"  ; (Ö) O with diaeresis
+    Send "{u+00da}"  ; (Ú) U with acute
   else
-    Send "{u+00f6}"  ; (ö) o with diaeresis
+    Send "{u+00fa}"  ; (ú) u with acute
 }
->!+o:: {
+>!+sc023::
+<^>!+sc023:: {
   if GetKeyState("CapsLock", "T")
-    Send "{u+00f6}"  ; (ö) o with diaeresis
+    Send "{u+00fa}"  ; (ú) u with acute
   else
-    Send "{u+00d6}"  ; (Ö) O with diaeresis
+    Send "{u+00da}"  ; (Ú) U with acute
+}
+
+; Key :  J
+>!sc024::
+<^>!sc024:: {
+  if GetKeyState("CapsLock", "T")
+    Send "{u+00d9}"  ; (Ù) U with grave
+  else
+    Send "{u+00f9}"  ; (ù) u with grave
+}
+>!+sc024::
+<^>!+sc024:: {
+  if GetKeyState("CapsLock", "T")
+    Send "{u+00f9}"  ; (ù) u with grave
+  else
+    Send "{u+00d9}"  ; (Ù) U with grave
 }
 
->!k:: {
+; Key :  K
+>!sc025::
+<^>!sc025:: {
   if GetKeyState("CapsLock", "T")
     Send "{u+0152}"  ; (Œ) ligature OE
   else
     Send "{u+0153}"  ; (œ) ligature oe
 }
->!+k:: {
+>!+sc025::
+<^>!+sc025:: {
   if GetKeyState("CapsLock", "T")
     Send "{u+0153}"  ; (œ) ligature oe
   else
     Send "{u+0152}"  ; (Œ) ligature OE
 }
 
->!l:: {
+; Key :  L
+>!sc026::
+<^>!sc026:: {
   if GetKeyState("CapsLock", "T")
     Send "{u+00d8}"  ; (Ø) O with stroke
   else
     Send "{u+00f8}"  ; (ø) o with stroke
 }
->!+l:: {
+>!+sc026::
+<^>!+sc026:: {
   if GetKeyState("CapsLock", "T")
     Send "{u+00f8}"  ; (ø) o with stroke
   else
     Send "{u+00d8}"  ; (Ø) O with stroke
 }
 
->!,:: {
-  if GetKeyState("CapsLock", "T")
-    Send "{u+00d2}"  ; (Ò) O with grave
-  else
-    Send "{u+00f2}"  ; (ò) o with grave
-}
->!<:: {
-  if GetKeyState("CapsLock", "T")
-    Send "{u+00f2}"  ; (ò) o with grave
-  else
-    Send "{u+00d2}"  ; (Ò) O with grave
-}
-
->!.:: {
+; Key :  ; / : (semicolon / colon)
+>!sc027::
+<^>!sc027::Send "{u+00b0}"   ; (°) degree sign
+>!+sc027::
+<^>!+sc027::Send "{u+00b7}"  ; (·) middle dot
+
+; Key :  ' / " (apostrophe / quotation mark)
+>!sc028::
+<^>!sc028::Send "{u+266a}"   ; (♪) eighth note
+>!+sc028::
+<^>!+sc028::Send "{u+266b}"  ; (♫) beamed eighth notes
+
+; Key :  \ / | (backslash / vertical line)
+>!sc02B::
+<^>!sc02B::Send "{u+2002}"   ; en space
+>!+sc02B::
+<^>!+sc02B::Send "{u+2003}"  ; em space
+
+; Key :  Z
+>!sc02C::
+<^>!sc02C:: {
   if GetKeyState("CapsLock", "T")
-    Send "{u+00d3}"  ; (Ó) O with acute
+    Send "{u+00c1}"  ; (Á) A with acute
   else
-    Send "{u+00f3}"  ; (ó) o with acute
+    Send "{u+00e1}"  ; (á) a with acute
 }
->!>:: {
+>!+sc02C::
+<^>!+sc02C:: {
   if GetKeyState("CapsLock", "T")
-    Send "{u+00f3}"  ; (ó) o with acute
+    Send "{u+00e1}"  ; (á) a with acute
   else
-    Send "{u+00d3}"  ; (Ó) O with acute
+    Send "{u+00c1}"  ; (Á) A with acute
 }
 
->!p:: {
+; Key :  X
+>!sc02D::
+<^>!sc02D:: {
   if GetKeyState("CapsLock", "T")
-    Send "{u+00d4}"  ; (Ô) O with circumflex
+    Send "{u+00c0}"  ; (À) A with grave
   else
-    Send "{u+00f4}"  ; (ô) o with circumflex
+    Send "{u+00e0}"  ; (à) a with grave
 }
->!+p:: {
+>!+sc02D::
+<^>!+sc02D:: {
   if GetKeyState("CapsLock", "T")
-    Send "{u+00f4}"  ; (ô) o with circumflex
+    Send "{u+00e0}"  ; (à) a with grave
   else
-    Send "{u+00d4}"  ; (Ô) O with circumflex
+    Send "{u+00c0}"  ; (À) A with grave
 }
 
->!s:: {
+; Key :  C
+>!sc02E::
+<^>!sc02E:: {
   if GetKeyState("CapsLock", "T")
-    Send "{u+1e9e}"  ; (ẞ) capital sharp S (capital Eszett)
+    Send "{u+00c7}"  ; (Ç) C with cedilla
   else
-    Send "{u+00df}"  ; (ß) small sharp s (Eszett)
+    Send "{u+00e7}"  ; (ç) c with cedilla
 }
->!+s:: {
+>!+sc02E::
+<^>!+sc02E:: {
   if GetKeyState("CapsLock", "T")
-    Send "{u+00df}"  ; (ß) small sharp s (Eszett)
+    Send "{u+00e7}"  ; (ç) c with cedilla
   else
-    Send "{u+1e9e}"  ; (ẞ) capital sharp S (capital Eszett)
+    Send "{u+00c7}"  ; (Ç) C with cedilla
 }
 
->!u:: {
+; Key :  V
+>!sc02F::
+<^>!sc02F:: {
   if GetKeyState("CapsLock", "T")
-    Send "{u+00dc}"  ; (Ü) U with diaeresis
+    Send "{u+00cd}"  ; (Í) I with acute
   else
-    Send "{u+00fc}"  ; (ü) u with diaeresis
+    Send "{u+00ed}"  ; (í) i with acute
 }
->!+u:: {
+>!+sc02F::
+<^>!+sc02F:: {
   if GetKeyState("CapsLock", "T")
-    Send "{u+00fc}"  ; (ü) u with diaeresis
+    Send "{u+00ed}"  ; (í) i with acute
   else
-    Send "{u+00dc}"  ; (Ü) U with diaeresis
+    Send "{u+00cd}"  ; (Í) I with acute
 }
 
->!h:: {
+; Key :  B
+>!sc030::
+<^>!sc030:: {
   if GetKeyState("CapsLock", "T")
-    Send "{u+00d9}"  ; (Ù) U with grave
+    Send "{u+00cc}"  ; (Ì) I with grave
   else
-    Send "{u+00f9}"  ; (ù) u with grave
+    Send "{u+00ec}"  ; (ì) i with grave
 }
->!+h:: {
+>!+sc030::
+<^>!+sc030:: {
   if GetKeyState("CapsLock", "T")
-    Send "{u+00f9}"  ; (ù) u with grave
+    Send "{u+00ec}"  ; (ì) i with grave
   else
-    Send "{u+00d9}"  ; (Ù) U with grave
+    Send "{u+00cc}"  ; (Ì) I with grave
 }
 
->!j:: {
+; Key :  N
+>!sc031::
+<^>!sc031:: {
   if GetKeyState("CapsLock", "T")
-    Send "{u+00da}"  ; (Ú) U with acute
+    Send "{u+00d1}"  ; (Ñ) N with tilde
   else
-    Send "{u+00fa}"  ; (ú) u with acute
+    Send "{u+00f1}"  ; (ñ) n with tilde
 }
->!+j:: {
+>!+sc031::
+<^>!+sc031:: {
   if GetKeyState("CapsLock", "T")
-    Send "{u+00fa}"  ; (ú) u with acute
+    Send "{u+00f1}"  ; (ñ) n with tilde
   else
-    Send "{u+00da}"  ; (Ú) U with acute
+    Send "{u+00d1}"  ; (Ñ) N with tilde
 }
 
->!y:: {
-  if GetKeyState("CapsLock", "T")
-    Send "{u+00db}"  ; (Û) U with circumflex
-  else
-    Send "{u+00fb}"  ; (û) u with circumflex
-}
->!+y:: {
-  if GetKeyState("CapsLock", "T")
-    Send "{u+00fb}"  ; (û) u with circumflex
-  else
-    Send "{u+00db}"  ; (Û) U with circumflex
-}
+; Key :  M
+>!sc032::
+<^>!sc032::Send "{u+00b5}"   ; (µ) micro sign
+>!+sc032::
+<^>!+sc032::Send "{u+00b1}"  ; (±) plus-minus sign
 
->!6:: {
+; Key :  , / < (comma / less-than sign)
+>!sc033::
+<^>!sc033:: {
   if GetKeyState("CapsLock", "T")
-    Send "{u+00c3}"  ; (Ã) A with tilde
+    Send "{u+00d3}"  ; (Ó) O with acute
   else
-    Send "{u+00e3}"  ; (ã) a with tilde
+    Send "{u+00f3}"  ; (ó) o with acute
 }
->!+6:: {
+>!+sc033::
+<^>!+sc033:: {
   if GetKeyState("CapsLock", "T")
-    Send "{u+00e3}"  ; (ã) a with tilde
+    Send "{u+00f3}"  ; (ó) o with acute
   else
-    Send "{u+00c3}"  ; (Ã) A with tilde
+    Send "{u+00d3}"  ; (Ó) O with acute
 }
 
->!7:: {
+; Key :  . / > (period / greater-than sign)
+>!sc034::
+<^>!sc034:: {
   if GetKeyState("CapsLock", "T")
-    Send "{u+00d5}"  ; (Õ) O with tilde
+    Send "{u+00d2}"  ; (Ò) O with grave
   else
-    Send "{u+00f5}"  ; (õ) o with tilde
+    Send "{u+00f2}"  ; (ò) o with grave
 }
->!+7:: {
+>!+sc034::
+<^>!+sc034:: {
   if GetKeyState("CapsLock", "T")
-    Send "{u+00f5}"  ; (õ) o with tilde
+    Send "{u+00f2}"  ; (ò) o with grave
   else
-    Send "{u+00d5}"  ; (Õ) O with tilde
+    Send "{u+00d2}"  ; (Ò) O with grave
 }
 
->!m::Send "{u+00b5}"   ; (µ) micro sign
->!+m::Send "{u+00b1}"  ; (±) plus-minus sign
-
->!1::Send "{u+00a1}"   ; (¡) inverted exclamation mark
->!+1::Send "{u+00b9}"  ; (¹) superscript 1
-
->!2::Send "{u+2264}"   ; (≤) less-than or equal to
->!+2::Send "{u+00b2}"  ; (²) superscript 2
-
->!3::Send "{u+2265}"   ; (≥) greater-than or equal to
->!+3::Send "{u+00b3}"  ; (³) superscript 3
-
->!4::Send "{u+00a3}"   ; (£) pound sign
->!+4::Send "{u+00a5}"  ; (¥) yen sign
-
->!5::Send "{u+20ac}"   ; (€) euro sign
->!+5::Send "{u+00a2}"  ; (¢) cent sign (dollar)
-
->!8::Send "{u+201e}"   ; („) double low-9 quotation mark
->!+8::Send "{u+00a7}"  ; (§) section sign
-
->!9::Send "{u+201c}"   ; (“) left double quotation mark
->!+9::Send "{u+2018}"  ; (‘) left single quotation mark
-
->!0::Send "{u+201d}"   ; (”) right double quotation mark
->!+0::Send "{u+2019}"  ; (’) right single quotation mark
-
->!-::Send "{u+2013}"   ; (–) en dash
->!_::Send "{u+2014}"   ; (—) em dash
+; Key :  / / ? (slash / question mark)
+>!sc035::
+<^>!sc035::Send "{u+00bf}"   ; (¿) inverted question mark
+>!+sc035::
+<^>!+sc035::Send "{u+2022}"  ; (•) bullet
 
->!=::Send "{u+00d7}"   ; (×) multiplication sign
->!+=::Send "{u+00f7}"  ; (÷) division sign
-
->![::Send "{u+00ab}"   ; («) left-pointing double angle quotation mark
->!{::Send "{u+2039}"   ; (‹) left-pointing single angle quotation mark
-
->!]::Send "{u+00bb}"   ; (») right-pointing double angle quotation mark
->!}::Send "{u+203a}"   ; (›) right-pointing single angle quotation mark
-
->!;::Send "{u+00b0}"   ; (°) degree sign
->!+;::Send "{u+00b7}"  ; (·) middle dot
-
->!'::Send "{u+2020}"   ; (†) dagger
->!+'::Send "{u+2021}"  ; (‡) double dagger
-
->!\::Send "{u+2002}"   ;     en space
->!|::Send "{u+2003}"   ;     em space
-
->!/::Send "{u+00bf}"   ; (¿) inverted question mark
->!?::Send "{u+2026}"   ; (…) horizontal ellipsis
-
->!space::Send "{u+00a0}"   ; non-breaking space (NBSP)
->!+space::Send "{u+00a0}"  ; non-breaking space (NBSP)
+; Key :  (space)
+>!sc039::
+<^>!sc039::Send "{u+00a0}"   ; non-breaking space (NBSP)
+>!+sc039::
+<^>!+sc039::Send "{u+00a0}"  ; non-breaking space (NBSP)
 
 
 ; Configuration :  Compose Key Selector
 
->!`::
->!sc056:: {
+>!sc029::
+>!+sc029::
+<^>!sc029::
+<^>!+sc029::
+>!sc056::
+>!+sc056::
+<^>!sc056::
+<^>!+sc056:: {
   ihA := InputHook("L1", gEndKeys)
   ihA.Start()
   ihA.Wait()
@@ -1966,6 +2185,10 @@ cmpSmallN["0"] := "{u+277f}"  ; (❿) dingbat negative circled digit 10
     if cmpSmallF.Has(ihB.Input)
       Send cmpSmallF[ihB.Input]
   }
+  else if (ihA.Input == "t") {
+    if cmpSmallT.Has(ihB.Input)
+      Send cmpSmallT[ihB.Input]
+  }
   else if (ihA.Input == "l") {
     if cmpSmallL.Has(ihB.Input)
       Send cmpSmallL[ihB.Input]
@@ -1994,10 +2217,6 @@ cmpSmallN["0"] := "{u+277f}"  ; (❿) dingbat negative circled digit 10
     if cmpSpace.Has(ihB.Input)
       Send cmpSpace[ihB.Input]
   }
-  else if (ihA.Input == "q") {
-    if cmpQuad.Has(ihB.Input)
-      Send cmpQuad[ihB.Input]
-  }
   else if (ihA.Input == "a") {
     if cmpArrow.Has(ihB.Input)
       Send cmpArrow[ihB.Input]
@@ -2046,10 +2265,6 @@ cmpSmallN["0"] := "{u+277f}"  ; (❿) dingbat negative circled digit 10
     if cmpCapitalS.Has(ihB.Input)
       Send cmpCapitalS[ihB.Input]
   }
-  else if (ihA.Input == "t") {
-    if cmpSmallT.Has(ihB.Input)
-      Send cmpSmallT[ihB.Input]
-  }
   else if (ihA.Input == "T") {
     if cmpCapitalT.Has(ihB.Input)
       Send cmpCapitalT[ihB.Input]
@@ -2058,9 +2273,29 @@ cmpSmallN["0"] := "{u+277f}"  ; (❿) dingbat negative circled digit 10
     if cmpCapitalP.Has(ihB.Input)
       Send cmpCapitalP[ihB.Input]
   }
-  else if (ihA.Input == ";") {
-    if cmpSemicolon.Has(ihB.Input)
-      Send cmpSemicolon[ihB.Input]
+  else if (ihA.Input == "y") {
+    if cmpSmallY.Has(ihB.Input)
+      Send cmpSmallY[ihB.Input]
+  }
+  else if (ihA.Input == "V") {
+    if cmpCapitalV.Has(ihB.Input)
+      Send cmpCapitalV[ihB.Input]
+  }
+  else if (ihA.Input == "Y") {
+    if cmpCapitalY.Has(ihB.Input)
+      Send cmpCapitalY[ihB.Input]
+  }
+  else if (ihA.Input == "x") {
+    if cmpSmallX.Has(ihB.Input)
+      Send cmpSmallX[ihB.Input]
+  }
+  else if (ihA.Input == "X") {
+    if cmpCapitalX.Has(ihB.Input)
+      Send cmpCapitalX[ihB.Input]
+  }
+  else if (ihA.Input == "|") {
+    if cmpVerticalLine.Has(ihB.Input)
+      Send cmpVerticalLine[ihB.Input]
   }
   else if (ihA.Input == "*") {
     if cmpAsterisk.Has(ihB.Input)
@@ -2098,6 +2333,14 @@ cmpSmallN["0"] := "{u+277f}"  ; (❿) dingbat negative circled digit 10
     if cmpGreaterThan.Has(ihB.Input)
       Send cmpGreaterThan[ihB.Input]
   }
+  else if (ihA.Input == "[") {
+    if cmpBracketLeft.Has(ihB.Input)
+      Send cmpBracketLeft[ihB.Input]
+  }
+  else if (ihA.Input == ";") {
+    if cmpSemicolon.Has(ihB.Input)
+      Send cmpSemicolon[ihB.Input]
+  }
   else if (ihA.Input == "1") {
     if cmpDigitOne.Has(ihB.Input)
       Send cmpDigitOne[ihB.Input]
@@ -2126,10 +2369,6 @@ cmpSmallN["0"] := "{u+277f}"  ; (❿) dingbat negative circled digit 10
     if cmpDigitZero.Has(ihB.Input)
       Send cmpDigitZero[ihB.Input]
   }
-  else if (ihA.Input == "[") {
-    if cmpBracketLeft.Has(ihB.Input)
-      Send cmpBracketLeft[ihB.Input]
-  }
   else if (ihA.Input == "]") {
     if cmpBracketRight.Has(ihB.Input)
       Send cmpBracketRight[ihB.Input]
@@ -2138,6 +2377,10 @@ cmpSmallN["0"] := "{u+277f}"  ; (❿) dingbat negative circled digit 10
     if cmpBackslash.Has(ihB.Input)
       Send cmpBackslash[ihB.Input]
   }
+  else if (ihA.Input == "C") {
+    if cmpCapitalC.Has(ihB.Input)
+      Send cmpCapitalC[ihB.Input]
+  }
   else if (ihA.Input == "G") {
     if cmpCapitalG.Has(ihB.Input)
       Send cmpCapitalG[ihB.Input]
@@ -2158,8 +2401,4 @@ cmpSmallN["0"] := "{u+277f}"  ; (❿) dingbat negative circled digit 10
     if cmpDigitSix.Has(ihB.Input)
       Send cmpDigitSix[ihB.Input]
   }
-  else if (ihA.Input == "C") {
-    if cmpCapitalC.Has(ihB.Input)
-      Send cmpCapitalC[ihB.Input]
-  }
 }